git:rebase(变基)的使用和理解 |
您所在的位置:网站首页 › 取消git rebase › git:rebase(变基)的使用和理解 |
今天了解下git的rebase功能,这里假设大家已经对git有所学习了,因此不会讲解git的其他基础用法。git是一款工具,所以学习的首要目的是明白其功能有什么作用,这里我们一步一步来分析rebase(变基)的作用。 假设我们需要创建一个分支用来开发产品的新功能, git checkout -b feature 可以看到我们当前只有两个分支,并且已经切换到了feature分支上。 接下来我们在feature分支下修改文件test.txt中的内容,在里面添加content_feature,保存并且提交。 git add test.txt git commit -m 'feature分支' 查看下提交的情况: git log --graph --pretty=oneline --abbrev-commit 这时,feature分支的功能开发完成了,可有时我们可能也会在master分支下,对同一个文件做出修改。如这时我们在master分支下对test.txt文件添加的内容为content_master。 同样是保存并且提交。 git add test.txt git commit -m 'master分支' 接下来是重点,当我们feature新功能开发完成时,就要合并到主分支中了。 git merge featture 可以看到合并内容有冲突,我们需要手动修改。那就改成content_master_feature吧。 接下来重新提交完成合并: git add test.txt git commit -m 'merge_master_feature' 可以看到合并成功。 。。。。总算该讲到rebase(变基)了。 变基其实也是一种合并分支的方法。如我们可以切换到feature分支下后,再用git reabse master命令进行分支合并。为什么要切换到feature分支下呢?而这句命令又是什么意思? 首先,我们得知道,使用merge合并时,其实是一种三方合并,就是修改后的master分支和feature分支,是以修改前的master分支为基础进行的合并。盗图: 可以认为c3,c4分别代表修改后的master分支,feature分支,而c2就是修改前的master分支,做为c3,c4基础的。 这时再看rebase变基这个名称,不就变换基础吗?那把谁变成基础分支呢?再盗图: 可以看到,我们把c3作为基础了,也就时修改后master分支,而feature分支的变化直接作用在master分支上,形成了新的master分支c4'。实现这些的命令: git checkout feature git rebase master 和之前一样,先要解决冲突,并且如何解决的方法都提供给我们了。 git add test.txt git rebase --continue 这时,feature(c4')分支就以修改后的master(c3)分支为基础进行的改变。接下来就可以切换回master分支,并快速合并两个分支。 $ git checkout master $ git merge feature说到这,,有点想骂人了是不,不是有merge了吗?要rebase这么麻烦干嘛啊??请下图: 没有变基的合并: 变基后的合并: 嗯嗯,没错了,变基的作用就是修整历史,将分支历史并入主线。 。。。是不是,这功能看起没没啥卵用,其实这功能是需要在某些场景下才会有明显作用,比如当我们向他人维护的开源项目提交修改时,肯定要先在自己的分支中进行开发,然后再提交,但如果我们变基后再提交,维护人员就不用进行整合工作了,直接快速合并即可。 感觉这些作用对我来说还是好遥远的啊,,,所以,就先学习到这儿吧,这些比较高级的功能你没实际的使用场景,学了也会很快忘记,了解了解即可,等到真的要用到时,也能加快我们的学习速度。 参考: git的官网教程 某个大神的深入讲解 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |